#include<iostream>

using namespace std;
const int N=110;

int Height[N][N];
int stepcot[N][N];
int r,c;

int dx[4]={-1,1,0,0};
int dy[4]={0,0,1,-1};

int Skiing(int x,int y)
{
	if(stepcot[x][y])
	{
		// cout<<3<<endl;
		return stepcot[x][y];
	}
	int step=1;
	// cout<<1<<endl;
	for(int n=0;n<4;n++)
	{
		int nx=dx[n]+x;
		int ny=dy[n]+y;
		if(nx>=1&&nx<=r&&ny>=1&&ny<=c&&Height[x][y]>Height[nx][ny])
		{
			// cout<<2<<endl;
			step=max(step,Skiing(nx,ny)+1);
		}
	}
	return stepcot[x][y]=step;
}
int main()
{
	cin>>r>>c;

	for(int i=1;i<=r;i++)
	{
		for(int j=1;j<=c;j++)
		{
			cin>>Height[i][j];
		}
	}

	int step=0;
	for(int i=1;i<=r;i++)
	{
		for(int j=1;j<=c;j++)
		{
			ret=max(step,Skiing(i,j));
		}
	}
	cout<<step<<endl;
}